function TreeNode(val) {
    this.val = val;
    this.left = null;
    this.right = null;
}
var verifyPostorder = function(postorder) {

    //  后序遍历  左右根
    return recur(postorder, 0, postorder.length -1)
    // 定义一个判断的函数
    function recur (postorder, i, j) {
        // 边界条件
        if (i >= j) return true
        // 找出左右子区间
        // 左子树中的所有的树都应该小于第一个搜索出来的大于根节点的树
        let p = i
        while (postorder[p] < postorder[j]) p++
        // 第一个大于根节点的值
        let m = p
        while (postorder[p] > postorder[j]) p++

        return  p == j && recur(postorder, i, m-1) && recur(postorder, m, j-1)
    }
};
var verifyPostorder = function(postorder) {

    // 边界条件
     if (postorder.length <= 2) return true
    const root = postorder.pop()
    // 划分左右子区间
    let i = 0
    while (postorder[i] < root) i++
    // 找出的第一个比根节点大的值
    const result = postorder.slice(i).every(item => {item > root})
    return result && verifyPostorder(postorder.slice(0, i)) && verifyPostorder(postorder.slice(i))
}

let postorder= [1, 3, 2, 6, 5]
console.log(verifyPostorder(postorder))